﻿//#include<iostream>
//using namespace std;
//class A
//{
//private:
//	virtual void Func()
//	{
//		cout << endl;
//	}
//};
//
//class B : public A
//{
//public:
//	static inline virtual void  Func()
//	{
//		
//	}
//	void Func2()
//	{
//
//	}
//};
//int main()
//{
//	B b;
//	return 0;
//}
//


//#include<iostream>
//using namespace std;
//class A {
//public:
//	A(const char* s) { cout << s << endl; }
//	~A() {}
//};
//class B :virtual public A
//{
//public:
//	B(const char* s1, const char* s2) :A(s1) { cout << s2 << endl; }
//};
//class C :virtual public A
//{
//public:
//	C(const char* s1, const char* s3) :A(s1) { cout << s3 << endl; }
//};
//class D :public B, public C
//{
//public:
//	D(const char* s1, const char* s2, const char* s3, const char* s4) :C(s1, s3), B(s1, s2), A(s1)
//	{
//		cout << s4 << endl;
//	}
//};
//int main() {
//	D* p = new D("class A", "class B", "class C", "class D");
//	delete p;
//	return 0;
//}


#include<iostream>

//class A
//{
//public:
//    virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; }
//    virtual void test() { func(); }
//};
//
//class B : public A
//{
//public:
//    virtual void func(int val = 0) { std::cout << "B->" << val << std::endl; }
//    virtual void xxx(){}
//};
//
//int main(int argc, char* argv[])
//{
//    B b;
//q    b.func();
//    b.xxx();
//    A* p = &b;
//    p->func();
//    return 0;
//}



//﻿class A
//
//{
//
//public:
//
//  A() :m_iVal(0) { test(); }
//
//  virtual void func() { std::cout << m_iVal << ‘ ’; }
//
//  void test() { func(); }
//
//public:
//
//  int m_iVal;
//
//};
//
//
//
//class B : public A
//
//{
//
//public:
//
//    B() { test(); }
//
//    virtual void func()
//
//    {
//
//        ++m_iVal;
//
//        std::cout << m_iVal << ‘ ’;
//
//    }
//
//};
//
//
//
//int main(int argc, char* argv[])
//
//{
//
//    A* p = new B;
//
//    p->test();
//
//    return 0;
//
//}

using namespace std;

class A

{

public:

    virtual void f()

    {

        cout << "A::f()" << endl;

    }

};



class B : public A

{

private:

    virtual void f()

    {

        cout << "B::f()" << endl;

    }

};


int main()
{
    B* pa = new B;

    pa->f();
    return 0;
}


